<?php
$isReloadable = true;
require_once("../../pers/inc.config.php");
require_once(R2_FS_WEB_ROOT.'/app/_inc/inc.session.php');
require_once(R2_FS_WEB_ROOT.'/app/_inc/funct.html.php');

if (rint2Vx($objSess->aSV,'visione_att','vai_a_data')=='') {
	$objSess->aSV['visione_att']['vai_a_data'] = date('d/m/Y');
}
if (rint2Vx($objSess->aSV,'visione_att','ass_corr')=='') {
	$objSess->aSV['visione_att']['ass_corr'] = 'N';
}
if (reqVar('ass_corr')!='') {
	$objSess->aSV['visione_att']['ass_corr'] = reqVar('ass_corr');
}
$_REQUEST['ass_corr'] = rint2Vx($objSess->aSV,'visione_att','ass_corr');

$odx = new rint2Date(rint2Vx($objSess->aSV,'visione_att','vai_a_data'),'dmy');

switch (reqVar('azione')) {
	case 'salva':
		$msgPag .= confAtt();
		break;
	case 'go':
		if ($odx->setDMY(reqVar('vai_a_data'))) {
			$objSess->aSV['visione_att']['vai_a_data'] = $odx->getDMY();
		} else {
			$msgPag = "data ".reqVar('vai_a_data')." errata <br>";
		}	
		$odx->setDMY(rint2Vx($objSess->aSV,'visione_att','vai_a_data'));
		break;
	case 'suc':
		$odx->setDayAdd(7);
		$objSess->aSV['visione_att']['vai_a_data'] = $odx->getDMY();
		break;
	case 'pre':
		$odx->setDayAdd(-7);
		$objSess->aSV['visione_att']['vai_a_data'] = $odx->getDMY();
		break;
}
$_REQUEST['vai_a_data'] = $odx->getDMY();

$utsLun = $odx->weekFirst('unix');
$utsDom = $odx->getDayAdd(6,'unix',$utsLun,'unix');

// lunedi\' settimana in oggetto.
$ymdLun = $odx->getYMD('-',4,$utsLun,'unix');
// domenica settimana in oggetto.
$ymdDom = $odx->getYMD('-',4,$utsDom,'unix');
//dbg_("$ymdLun - $ymdDom")

// array modalita' visualizzazione sorgenti.
$aVisAss['S'] = "Assegnazioni correnti";
$aVisAss['N'] = "Tutte le assegnazioni";

$aRdOpt = array();
$aRdOpt['onClick'] = "javascript:submAzione('');";

// attivita' teoriche. 
$sSql = " SELECT c.id_comm, c.cod_comm, c.descr as c_descr, c.data_iniz, c.data_fine, ".
		 " a.tipo_att, a.flag_corrente, ap.tipo_rilevazione ".
		 " FROM commessa c ".
		 " INNER JOIN att_previste ap ON ap.id_comm = c.id_comm ". 
		 "                           AND ap.id_rint = 0 ".
		 " INNER JOIN assegnaz a ON a.id_comm = c.id_comm ".
		 "                       AND a.tipo_att = ap.tipo_att ".
		 "                       AND a.id_operatore = ".$objSess->idUtente.		
		 " WHERE c.data_iniz <= '".$ymdDom."' OR c.data_fine >= '".$ymdLun."' ".
       " ORDER BY c_descr, ap.tipo_att, a.flag_corrente ";
$objDB->query($sSql,'sAttA');
dbg_($sSql);

$aAtt = array();
while($acAttA = $objDB->fetch('sAttA')) {
	$aAtt[$acAttA['id_comm']]['desCom'] = $acAttA['cod_comm']." - ". $acAttA['c_descr'];
	$aAtt[$acAttA['id_comm']]['diCom']  = $acAttA['data_iniz'];
	$aAtt[$acAttA['id_comm']]['dfCom']  = $acAttA['data_fine'];
	$aAtt[$acAttA['id_comm']]['att'][$acAttA['tipo_att']]['desAtt']  = $aTipiAttRint[$acAttA['tipo_att']]['des'];
	$aAtt[$acAttA['id_comm']]['att'][$acAttA['tipo_att']]['flag']    = $acAttA['flag_corrente'];
	$aAtt[$acAttA['id_comm']]['att'][$acAttA['tipo_att']]['tipoRil'] = $acAttA['tipo_rilevazione'];
}
//dbg_($aAtt);

// attivita' gia' registrate.
$sAttB = " SELECT c.id_comm, c.cod_comm, c.descr as c_descr, c.data_iniz, c.data_fine ". 
		 ", at.tipo_att, IF(at.id_rint=0, 0, 1) AS flag_rint, IFNULL(a.flag_corrente, 'N') AS flag_corrente ".
		 ", ap.tipo_rilevazione, IFNULL(at.ore, 0.0) as at_ore, IFNULL(at.data, '0000-00-00') as at_data ". 
		 " FROM attivita at ".
 		 " INNER JOIN commessa c ON c.id_comm = at.id_comm ".
		 " LEFT JOIN att_previste ap ON ap.id_comm = at.id_comm ". 
		 "                         AND ap.id_rint = 0 ".
		 "                         AND ap.tipo_att = at.tipo_att ".	     
		 " LEFT JOIN assegnaz a ON a.id_comm = at.id_comm ".
		 "                     AND a.id_rint = at.id_rint ". 
		 "                     AND a.tipo_att = at.tipo_att ".
         "                     AND a.id_operatore = at.id_operatore ".		
		 " WHERE at.id_operatore = ".$objSess->idUtente.
		 " AND at.data BETWEEN '".$ymdLun."' AND '".$ymdDom."' ".
       " ORDER BY c_descr, at.tipo_att, flag_corrente ";
$objDB->query($sAttB,'sAttB');
//dbg_($sAttB);

while($acAttB = $objDB->fetch('sAttB')) {
	$aAtt[$acAttB['id_comm']]['desCom'] = $acAttB['cod_comm']." - ". $acAttB['c_descr'];
	$aAtt[$acAttB['id_comm']]['diCom']  = $acAttB['data_iniz'];
	$aAtt[$acAttB['id_comm']]['dfCom']  = $acAttB['data_fine'];
	$aAtt[$acAttB['id_comm']]['att'][$acAttB['tipo_att']]['desAtt']  = $aTipiAttRint[$acAttB['tipo_att']]['des'];
	$aAtt[$acAttB['id_comm']]['att'][$acAttB['tipo_att']]['flag'] = $acAttB['flag_corrente'];
	$aAtt[$acAttB['id_comm']]['att'][$acAttB['tipo_att']]['tipoRil'] = $acAttB['tipo_rilevazione'];
	
	if (isset($aAtt[$acAttB['id_comm']]['att'][$acAttB['tipo_att']][$acAttB['flag_rint']][$acAttB['at_data']])) {
		$aAtt[$acAttB['id_comm']]['att'][$acAttB['tipo_att']][$acAttB['flag_rint']][$acAttB['at_data']] += $acAttB['at_ore'];
		$aAtt[$acAttB['id_comm']]['att'][$acAttB['tipo_att']][$acAttB['flag_rint']]['NR'][$acAttB['at_data']]  = '2';
	} else {
		$aAtt[$acAttB['id_comm']]['att'][$acAttB['tipo_att']][$acAttB['flag_rint']][$acAttB['at_data']]  = $acAttB['at_ore'];
		$aAtt[$acAttB['id_comm']]['att'][$acAttB['tipo_att']][$acAttB['flag_rint']]['NR'][$acAttB['at_data']]  = '1';
	}
	
	if (reqVar('ass_corr') == 'S' and $acAttB['flag_corrente'] == 'N') {continue;}
	
	if (isset($aAtt['totOreData'][$acAttB['at_data']])) {
		$aAtt['totOreData'][$acAttB['at_data']] += $acAttB['at_ore'];
	} else {
		$aAtt['totOreData'][$acAttB['at_data']]  = $acAttB['at_ore'];
	}
}
//dbg_($aAtt);

/*/ primo accesso
if (reqvar('azione')=='' or reqvar('azione')=='go') {
	foreach ($aAtt as $co => $aCo) {
		if ($co == 'totOreData') {continue;}
		foreach ($aCo['att'] as $ta => $aTiAt) {			
			if ($aTiAt['flag'] == 'S') {
				$_REQUEST['chk_'.$co.'_'.$ta] = $co.'_'.$ta;	
			}			
			if (!isset($aTiAt[0])) {continue;}			
			foreach ($aTiAt[0] as $d => $o) {				
				if ($d == '0000-00-00') {continue;}	
				$_REQUEST['ore_'.$co.'_'.$ta.'_'.$d] = num2str($o, 1);	
			}		

		}		
	}	
}	
//*///////////////////////////////////////////////////

$cmdL = "";
$cmdL .= "<a class='cmd1' href=\"attIns.php?data=".urlencode(reqvar('vai_a_data'))
	."&xsn=".XSN."\">inserisci attivita</a>";
$cmdL .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
$cmdL .= "<a class='cmd1' href=\"attDett.php?xsn=".XSN."\">visione dettagliata</a>";
	
$cmdR  = "";
$cmdR .= "<a class='cmd1' href='#' onclick=\"submAzione('salva');\">conferma</a>";
$cmdR .= cmdTorna('', 3); 

$sPaginaz  = "";
$sPaginaz .= "<a class='cmd1' href='#' onclick=\"submAzione('pre')\">sett. prec.</a>";
$sPaginaz .= "&nbsp;&nbsp;&nbsp;";
$sPaginaz .= "<a class='cmd1' href='#' onclick=\"submAzione('suc')\">sett. succ.</a>";

$aMenuPag = array();
include("./_inc/inc.aMenuPag.php");
testaHtml('Imputazione Attivita\' - visione sintetica', $msgPag, '30.10.10', $aMenuPag);

echo getHtmlForm();
echo getHtmlHidden('azione','...');
echo getHtmlHidden('week', '');
echo getHtmlHidden('time');
echo getHtmlHidden('xsn',XSN);

foreach ($aAtt as $co => $aCo) {
	if ($co == 'totOreData') {continue;}
	foreach ($aCo['att'] as $ta => $aTiAt) {
		echo getHtmlHidden('hid_'.$co.'_'.$ta, $co.'_'.$ta);
	}
}	
?>
<script>
function navWeek(str) {
	document.frm1.week.value=str;
	document.frm1.azione.value='';
	document.frm1.submit();
}

function submAzione(azione) {
	document.frm1.azione.value=azione;
	document.frm1.submit();
}

</script>

<table class="cmd1" border="0" cellpadding="3" cellspacing="1" width="100%" align='center'>
   <tr>
      <td class="cmd1" align="left">
      		<?=$cmdL?>
      </td>
      <td class="cmd1" align="left">
      		&nbsp;
      </td>
      <td class="cmd1" align="right">
      		<?=$cmdR?>
      </td>
   </tr>
   <tr>
      <td class="cmd1" align="left">Vai alla data&nbsp;:&nbsp;
			<?
			echo getHtmlDate('vai_a_data'); ?>&nbsp;&nbsp;
	  		<a class='cmd1' href='#' onclick='submAzione("go");'>vai</a>
      </td>
      <td class="cmd1" align="center">
			<?=getHtmlRadio('ass_corr', $aVisAss, '@REQ', $aRdOpt) ?>
      </td>
      <td class="cmd1" align="right">
			<?=$sPaginaz?>
      </td>
   </tr>
</table>

<table class="tab1" border="0" cellpadding="1" cellspacing="1" width="100%" align='center'>
	<tr>
		<td class='lab1' align='center' colspan='2' width='30%'>Commessa / Attivita'</td>
<?	
for($k=0;$k<7;$k++) {		
	echo "<td class='lab1' align='center' with='8%'>";
	$odx->setDayAdd($k,'unix',$utsLun,'unix');
	echo $odx->weekDay('it-long')."</br>";
	echo $odx->getDMY();		
	echo "</td>";
}		
?>
   	 			</tr>
	<tr>
		<td class='lab1' align='right' colspan='2' height='25'><b>Ore mancanti :&nbsp;</b></td>
<? 
	for($k=0;$k<7;$k++) {
		$odx->setDayAdd($k,'unix',$utsLun,'unix');
		$oreLav = ($odx->isHoliday()) ? 0 : 7.5;
		$ymdX = $odx->getYMD();
		$oreManc = (isset($aAtt['totOreData'][$ymdX])) ? $oreLav - $aAtt['totOreData'][$ymdX] : $oreLav;
		if ($oreManc== 0) {
			$sStyle = "";
		} elseif($oreManc > 0) {
			$sStyle = "style='color:red;font-weight:bold;'";
		} else {
			$sStyle = "style='font-weight:bold;'";
		}
		echo "<td class='lab1' align='center' $sStyle>";
		echo num2str($oreManc, 1);	
		echo "</td>";		
	}
?>		

	</tr>
<?  
foreach ($aAtt as $co => $aCo) {
	if ($co == 'totOreData') {continue;}
	$diC = $aCo['diCom'];	
	$dfC = $aCo['dfCom'];		
	echo "<tr>\n";
	echo "<td class='txt1' height='25' colspan='2' style='font-weight:bold;'>".substr($aCo['desCom'],0,50)."</td>\n";
	for($k=0;$k<7;$k++) {
		$odx->setDayAdd($k,'unix',$utsLun,'unix');
		$ymdX = $odx->getYMD();
		echo "<td class='txt1' align='center'>";
		if ($ymdX > R2_DATA_CONSOLID) { 			
			echo "<a href='attIns.php?id_comm=$co&data=".urlencode(YMD2DMY($ymdX))
				."&xsn=".XSN."' class='cmd1' title=\"inserisci attivita'\">"						
				."<img src='".R2_URL_ROOT."/app/_img/b_edit.png' border='0'></a>\n";
		} else {
			echo "&nbsp;";	 	
		} 
		echo "</td>";
	}		
	echo "</tr>";
	foreach ($aCo['att'] as $ta => $aTiAt) {
		if (reqVar('ass_corr') == 'S' and $aTiAt['flag'] != 'S') {continue;}
		$suffReq = $co."_".$ta;	
		reqDef('zzchk_'.$suffReq, $aTiAt['flag']);
?> 
	<tr>
		<td class='txt1' align='center'>
			<?
			echo getHtmlHidden('zzhid_'.$suffReq, 'X');
			echo getHtmlCheckBox('zzchk_'.$suffReq); 
			?>
		</td>
		<td class='txt1'>
			<?
			echo $aTiAt['desAtt'];
			if ($aTiAt['tipoRil'] == 'R' or $aTiAt['tipoRil'] == 'X') {
				echo " (r)";
			}
			?>
		</td>
<?	
	for($k=0;$k<7;$k++) {
		$odx->setDayAdd($k,'unix',$utsLun,'unix');
		$dt = $odx->getYMD();
?>
		<td class='txt1' align='center'>
<?		if ($dt >= $diC and $dt <= $dfC) { ?>			
			<table class="tab1" border="0" cellpadding="0" cellspacing="0" width="100%">
				<tr>
					<td class='txt1' align='center' width='33%'>
				<? 	if ($aTiAt['tipoRil'] == 'R' or $aTiAt['tipoRil'] == 'X') {
						if (isset($aTiAt[1][$dt])) {
							echo num2str($aTiAt[1][$dt], 1); 
						} else {
							echo "&nbsp;";
						}
					} 
					echo "&nbsp;&nbsp;";	 	
				?>
					</td>
					<td class='txt1' align='center' width='34%'> 
					<? if ($aTiAt['tipoRil'] == 'A' or $aTiAt['tipoRil'] == 'X') { 
						   // input text per attivita' fuori rint solo se < 2
						   if ((isset($aTiAt[0]['NR'][$dt]) and $aTiAt[0]['NR'][$dt] > 1) OR  
								$dt <= R2_DATA_CONSOLID) {
								if (isset($aTiAt[0][$dt]) && $aTiAt[0][$dt] != 0 ) {
									echo num2str($aTiAt[0][$dt], 1); 
								} else {
									echo "&nbsp;";
								}
						   } else {	
							   if (!isset($_REQUEST['ore_'.$co.'_'.$ta.'_'.$dt]) or
							        (isset($_REQUEST['ore_'.$co.'_'.$ta.'_'.$dt]) and $_REQUEST['ore_'.$co.'_'.$ta.'_'.$dt] == '') 
								    ) {
									$_REQUEST['ore_'.$co.'_'.$ta.'_'.$dt] = '';
							   }
							   echo getHtmlTextNum('ore_'.$co.'_'.$ta.'_'.$dt, 1, 5); 						  
						   } ?>
					<? } else {
					   	 	echo "&nbsp;";	 	
					   } ?>
					</td>
				</tr>
			</table>
<?		} else { 			
			if (isset($aTiAt[0][$dt]) or isset($aTiAt[1][$dt])) { ?>				
			    <table class="tab1" border="0" cellpadding="0" cellspacing="0" width="100%">
					<tr>
						<td class='txt1' align='center' width='33%'>
					<? 	if ($aTiAt['tipoRil'] == 'R' or $aTiAt['tipoRil'] == 'X') {
							if (isset($aTiAt[1][$dt])) {
								echo num2str($aTiAt[1][$dt], 1); 
							} else {
								echo "&nbsp;";
							}
						} else {
						   	echo "&nbsp;";	 	
						} ?>
						</td>
						<td class='txt1' align='center' width='34%'>
						<? if ($aTiAt['tipoRil'] == 'A' or $aTiAt['tipoRil'] == 'X') { 
							   if (isset($aTiAt[0][$dt])) {							   	
								   // input text per attivita' fuori rint solo se < 2
								   if ((isset($aTiAt[0]['NR'][$dt]) and $aTiAt[0]['NR'][$dt] > 1) OR  
										$dt <= R2_DATA_CONSOLID) {
								   		if (isset($aTiAt[0][$dt])) {
											echo num2str($aTiAt[0][$dt], 1); 
										} else {
											echo "&nbsp;";
										}
								   } else {	
									   if (!isset($_REQUEST['ore_'.$co.'_'.$ta.'_'.$dt]) or
									        (isset($_REQUEST['ore_'.$co.'_'.$ta.'_'.$dt]) and $_REQUEST['ore_'.$co.'_'.$ta.'_'.$dt] == '') 
										    ) {
											$_REQUEST['ore_'.$co.'_'.$ta.'_'.$dt] = '0,0';
									   }
									   echo getHtmlTextNum('ore_'.$co.'_'.$ta.'_'.$dt, 1, 5); 						  
								   } 
							   } else {
							   		echo "&nbsp;";
							   } 
						   } else {
						   	 	echo "&nbsp;";	 	
						   } ?>
						</td>
					</tr>
				</table>					
<?			} else {
				echo "&nbsp;";
			}
		} 
?>
		</td>
<?	} ?>		
	</tr>
<?	}
}
?>
	<tr>
		<td class='lab1' align='right' colspan='2' height='25'><b>Tot. ore giorno :&nbsp;</b></td>
<?  
	for($k=0;$k<7;$k++) {
		$odx->setDayAdd($k,'unix',$utsLun,'unix');
		$dt = $odx->getYMD();
		echo "<td class='lab1' align='center'><b>";
		if (isset($aAtt['totOreData'][$dt])) {
			echo num2str($aAtt['totOreData'][$dt], 1);	
		} else {
			echo '0,0';
		}
		echo "</b></td>";		
	}
?>		

	</tr>
</table>

<table class="cmd1" border="0" cellpadding="3" cellspacing="1" width="100%" align='center'>
   <tr>
      <td class="cmd1" align="left">
      		(r) = attivita' da rint
      </td>
      <td class="cmd1" align="right">
	  		<?=$sPaginaz?>
      </td>
   </tr>
   <tr>
      <td class="cmd1" align="left">
         	<?=$cmdL?>
      </td>
      <td class="cmd1" align="right">
         	<?=$cmdR?>
      </td>
   </tr>
</table>
<?
echo "</form>";

codaHtml();
exit();

function confAtt() {
	global $objDB, $objSess;
	$msg = '';
	return "*** modifiche programma in corso - aggiornamento NON effettuato ***";
	
	$id_operatore = $objSess->idUtente;
	// aggiornamento tabella assegnaz rint = 0;
	foreach ($_REQUEST as $key => $value) {
		if (substr($key, 0, 6) != 'zzhid_') {continue;}		
		list($pref,$id_comm,$tipo_att)  = explode("_",$key); 
		if (reqVar('zzchk_'.substr($key, 6))=='S') {
			$flag_corrente = 'S'; 
		} else {
			$flag_corrente = 'N'; 
		}	
		
		$sSql = " UPDATE assegnaz SET ".
				   " flag_corrente = '".$flag_corrente."' ".
				   " WHERE id_operatore = ".$id_operatore.
				   " AND        id_comm = ".$id_comm.
		 		   " AND        id_rint = 0 ".
		 		   " AND       tipo_att = ".$tipo_att;
		$objDB->exec($sSql);
	}
	// controlli
	foreach ($_REQUEST as $key => $value) {
		if (substr($key, 0, 6) != 'zzore_') {continue;}		
		list($pref,$id_comm,$tipo_att,$dtUnix)  = explode("_",$key); 		
		$ore = str2num($value);		
		if ($ore === false) {
			$msg .= 'inserito valore '.$value.' non numerico</br>';
			continue;
		}
	}
	if ($msg != '') {return $msg;}
	
	foreach ($_REQUEST as $key => $value) {
		if (substr($key, 0, 6) != 'zzore_') {continue;}		
		list($pref,$id_comm,$tipo_att,$dtUnix)  = explode("_",$key); 		
		$ore = str2num($value);		
		$data = date("Y-m-d",$dtUnix);
		$sSql = " SELECT id_att FROM attivita WHERE ".
					"          id_rint = 0".
					" AND      id_comm = ".$id_comm.		
					" AND id_operatore = ".$id_operatore.
		 			" AND     tipo_att = ".$tipo_att.
					" AND         data = '".$data."'";
		//dbg_($sSql);
		$objDB->exec($sSql, 'sSelAtt');
		$id_att = 0;
		if ($acAtt = $objDB->fetch('sSelAtt')) {
			$id_att = $acAtt['id_att'];	
			while($acX = $objDB->fetch('sSelAtt')) { //cancella rec doppi (non dovrebbero esistere)
				$sSql = " DELETE FROM attivita WHERE id_att = ".$acX['id_att'];
				//dbg_($sSql);
				$objDB->exec($sSql);				
			}
		}
		if ($id_att > 0) {
			if ($ore == 0) {
				$sSql = " DELETE FROM attivita WHERE id_att = ".$id_att;
				//dbg_($sSql);
				$objDB->exec($sSql);				
			} else {
			   	$sSql = " UPDATE attivita SET ore  = ".$ore." ".
			   	        " WHERE id_att = ".$id_att;
			   //dbg_($sSql);
				$objDB->exec($sSql);		
			}
		} elseif ($ore != 0) {			
		   	$sSql = "INSERT INTO attivita SET ".
			        "       id_comm = ".$id_comm.
			        ",      id_rint = 0 ".
			        ", id_operatore = ".$id_operatore.
			        ",     tipo_att = ".$tipo_att.
					",         data = '".$data."' ".	
					",         ore  = ".$ore." ";
		   //dbg_($sSql);
			$objDB->exec($sSql);		
		}	
	}
	return "*** aggiornamento effettuato ***";
}
?>